﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Control.Catalogo;
using Entidades.Consultas.Personalizadas;
using Entidades.Catalogo;
using Entidades.General;
using Entidades.Solicitud;
using Navegador.Vistas;
using Control.Solicitud;

namespace SICOIA.UserControls.Afectados
{
    public partial class ucAfectadosParticulares : ViewController //System.Web.UI.UserControl
    {
        #region 
        EntUsuario usuario = new EntUsuario();

        CtrlSolicitudAfectadoParticular controlAfectadoParticular = new CtrlSolicitudAfectadoParticular(); 
        #endregion

        protected void Page_Load(object sender, EventArgs e)
        {
            if ((EntUsuario)Session["UserPemex"] == null)
            {
                Response.Write("<script>parent.window.open('../Marcos/EndPEMEX.aspx','_top')</script>");
                CancelarEdicion();
            }
            else
                usuario = (EntUsuario)Session["UserPemex"];

            if (!Page.IsPostBack)
            {
                txtMonto.Attributes.Add("onkeypress", "return keyMoneda(event);");
                HddAccion.Value = (Request.Params["accion"] != null ? Request.Params["accion"].ToString() : "nuevo");
                LlenarCombos();
                if (HddAccion.Value == "nuevo")
                {
                    HddCveObra.Value = Request.Params["cveTrabajoRealizar"] !=null ? Request.Params["cveTrabajoRealizar"].ToString() : "";
                    LlenarCombos();
                }
                else if (HddAccion.Value == "editar")
                {
                    HddCveAfectadoParticular.Value = Request.Params["IdAfectadoParticular"].ToString();
                    //HddCvePredio.Value = Request.Params["IdPredio"].ToString();
                    //HddCveSolicitud.Value = Request.Params["IdSolicitud"].ToString();
                    GetAfectadoParticular();
                }
            }

            if (RdbPermisoPaso.Items.Count > 0)
            {
                foreach (ListItem item in RdbPermisoPaso.Items)
                    item.Attributes.Add("onclick", "javascript:changePermiso(this.value);");
            }

            //txtExpedienteSiarp.Text = HddCveObra.ClientID;
        }

        // http://127.0.0.1:8080/Solicitudes/jsp/captura/afectados/frm_captura_afectados.jsp?tipo_pantalla=P&tipo_pantalla=P&tipo_captura=I&cve_obra=729&cve_solicitud=602

        #region Base De Datos

        private void GetAfectadoParticular()
        {
            try
            {
                EntSolicitudAfectado AfectadoParticular = new EntSolicitudAfectado();
                controlAfectadoParticular = new CtrlSolicitudAfectadoParticular();

                AfectadoParticular.CveSolicitudAfectado = int.Parse(HddCveAfectadoParticular.Value);

                AfectadoParticular = controlAfectadoParticular.Obtener(AfectadoParticular);

                if (AfectadoParticular != null)
                {
                    
                    txtExpedienteSiarp.Text = AfectadoParticular.NoExpendiente;
                    txtArea.Text = AfectadoParticular.AreaAfectada;
                    txtKmInicial.Text = AfectadoParticular.KilometroInicial;
                    txtObtenido.Text = AfectadoParticular.FechaObtencionPerPaso;
                    txtMonto.Text = AfectadoParticular.MontoAfectacionAprobado;
                    cmbGestorAsignado.SelectedIndex = cmbGestorAsignado.Items.IndexOf(cmbGestorAsignado.Items.FindByValue(AfectadoParticular.CveUsuario.ToString()));
                    txtComentarios.Text = AfectadoParticular.ComentariosCarga;

                    //chkCompromisos.Checked = AfectadoParticular
                    txtLongitud.Text = AfectadoParticular.LongitudAfectada;
                    txtKmFinal.Text = AfectadoParticular.KilometroFinal;
                    txtEnviado.Text = AfectadoParticular.FechaEnvioPermisoPaso;
                    HddCvePredio.Value = AfectadoParticular.CvePredio.ToString();
                    HddCveObra.Value = AfectadoParticular.CveTrabajoRealizar.ToString();
                    cmbGestorAsignado.SelectedIndex = cmbGestorAsignado.Items.IndexOf(cmbGestorAsignado.Items.FindByValue(AfectadoParticular.CveUsuario.ToString()));
                }
            }
            catch (Exception ex)
            {
                lblMensajes.Text = ex.Message;
                popupMensajes.Show();
            }
        }

        #endregion

        #region "Eventos Toolbar"

        protected void btnGuardar_Click(object sender, EventArgs e)
        {
            try
            {
                CtrlSolicitudAfectadoParticular ctrl = new CtrlSolicitudAfectadoParticular();

                ctrl.Insertar( MapFields());
                EjecutarScript(" alert('La información se ha registrado');");
            }
            catch (BussinesLogicException ex)
            {
                lblMensajes.Text = ex.Message;
                popupMensajes.Show();
            }
        }
        public EntSolicitudAfectado MapFields()
        {
            EntSolicitudAfectado ent = new EntSolicitudAfectado();

            if (int.Parse(HddCveAfectadoParticular.Value) > 0)
                ent.CveSolicitudAfectado = int.Parse(HddCveAfectadoParticular.Value);
            if (HddCvePredio.Value != "")
                ent.CvePredio = int.Parse(HddCvePredio.Value);
            else 
                throw new BussinesLogicException("Debe seleccionar el Predio afectado de la barra superior 'Seleccionar Afectado'");

            // Pendiente el predio
            
            ent.PP_ErogacionVerbal = RdbPermisoPaso.SelectedValue.ToString();
            ent.Observaciones = txtComentarios.Text;
            ent.AreaAfectada = txtArea.Text;
            if (cmbGestorAsignado.SelectedValue.ToString() == "") throw new BussinesLogicException("Debe seleccionar un gestor");
            ent.CveUsuario = int.Parse( cmbGestorAsignado.SelectedValue.ToString());
            ent.LongitudAfectada = txtLongitud.Text;
            ent.KilometroInicial = txtKmInicial.Text;
            ent.KilometroFinal = txtKmFinal.Text;
            // Falta definir el estatus
            ent.CveEstatus = 0;
            ent.CveTrabajoRealizar = int.Parse( HddCveObra.Value);
            ent.FechaEnvioPermisoPaso = txtEnviado.Text;
            ent.FechaObtencionPerPaso = txtObtenido.Text;
            ent.MontoAfectacionAprobado = txtMonto.Text;
            ent.NoExpendiente = txtExpedienteSiarp.Text;
            //ent.FechaComprometidaCompromiso
            //ent.FechaCumplimientoCompromiso
       
            if (ent.FechaEnvioPermisoPaso != string.Empty && txtMonto.Text.Trim().Length == 0)
                throw new BussinesLogicException("Debe proporcionar el Monto de la Afectación");
            return ent;
        }
        protected void btnNuevo_Click(object sender, EventArgs e)
        {
            Limpiar();
        }

        #endregion

        #region "Utilerias"
        private void CancelarEdicion()
        {
            string valor = "parent.window.open('../Marcos/EndPEMEX.aspx','_top');";
            string script = string.Empty;
            string CadMensaje = string.Empty;

            script = "<script type='text/javascript' language='javascript'>";
            script = script + valor + ";";


            script = script + "</script>";

            ScriptManager.RegisterStartupScript(UpdatePanelCuerpo, this.GetType(), "temp", script, false);
        }
        private void Limpiar()
        {
            HddAccion.Value = "nuevo";
            HddCveAfectadoParticular.Value = "0";
            HddCveObra.Value = "0";
            HddCvePredio.Value = "0";
            HddCveSolicitud.Value = "0";

            RdbPermisoPaso.Items[0].Selected = true;
            txtExpedienteSiarp.Text = string.Empty;
            txtArea.Text = string.Empty;
            txtKmInicial.Text = string.Empty;
            txtObtenido.Text = string.Empty;
            txtMonto.Text = string.Empty;
            cmbGestorAsignado.SelectedIndex = 0;
            txtComentarios.Text = string.Empty;
            chkCompromisos.Checked = false;

            txtLongitud.Text = string.Empty;
            txtKmFinal.Text = string.Empty;
            txtEnviado.Text = string.Empty;

            UpdatePanelCuerpo.Update();
        }

        private void LlenarCombos()
        {
            try
            {
                CtrlSolicitudTrabajosRealizar controlSolicitudTrabajosRealizar = new CtrlSolicitudTrabajosRealizar();
                controlSolicitudTrabajosRealizar.usuario = usuario;
                List<EntObraConDetalle> ListaObra = new List<EntObraConDetalle>();

                EntSolicitudTrabajosRealizar entSolicitudTrabajosRealizar = controlSolicitudTrabajosRealizar.Obtener(new EntSolicitudTrabajosRealizar() { CveTrabajoRealizar =int.Parse( HddCveObra.Value) });
                if (entSolicitudTrabajosRealizar != null) lblObra.Text = entSolicitudTrabajosRealizar.DescripcionObra;
                CtrlUsuario ctrlUsuario = new CtrlUsuario();

                if (usuario.CveRol != 3) // Un Gestor. unicamente mostrarse a el mismo
                {
                    List<EntUsuario> ListaUsuario = new List<EntUsuario>();
                    ListaUsuario = (List<EntUsuario>)ctrlUsuario.ObtenerTodosAfectadosGestores(usuario).ConvertAll<EntUsuario>(delegate(IEntidad enti) { return (EntUsuario)enti; });

                    int indexCombo = 0;
                    this.cmbGestorAsignado.Items.Clear();
                    this.cmbGestorAsignado.Items.Insert(0, new ListItem("Seleccione un Elemento", "", true));
                    foreach (EntUsuario elemento in ListaUsuario)
                        this.cmbGestorAsignado.Items.Insert(indexCombo += 1, new ListItem(elemento.NombreCompleto, elemento.CveUsuario.ToString(), true));
                }
                else {
                    int indexItem = (this.cmbGestorAsignado.Items.Count == 0) ? 0 : 1;
                    this.cmbGestorAsignado.Items.Insert(indexItem, new ListItem(usuario.NombreCompleto, usuario.CveUsuario.ToString(), true));
                }
            }
            catch (Exception ex)
            {
                lblMensajes.Text = ex.Message;
                popupMensajes.Show();
            }
        }

        private void EjecutarScript(string Script)
        {
            string msg = string.Empty;
            msg = "<script type='text/javascript' language='javascript'>";
            msg = msg + Script + "</script>";

            ScriptManager.RegisterStartupScript(Page, Page.GetType(), string.Empty, Script, true);
        }

        private void Mensaje(string mensaje)
        {
            string script = string.Empty;
            string CadMensaje = string.Empty;
            CadMensaje = mensaje.Replace("`", "").Replace("´", "").Replace("\"", "").Replace("'`", "").Replace("'", "");
            script = "<script type='text/javascript' language='javascript'>jAlert('";
            script = script + CadMensaje + "', 'Mensaje');</script>";

            ScriptManager.RegisterStartupScript(UpdatePanelCuerpo, this.GetType(), "temp", script, false);
        }

        #endregion

    }
}